package practica1.ui.panelPoblacion;

import java.util.ArrayList;
import javax.swing.AbstractListModel;
import javax.swing.ComboBoxModel;

/**
 * Modelo del combobox que permite modificarse
 * @author Miguel González - Ceura
 */
public class ModeloComboBox  extends AbstractListModel  implements ComboBoxModel {

    private ArrayList<String> datos;
    private String itemSeleccionado = null;
    
    /**
     * Contructor por defecto del combobox
     * @param datos String[] Establece los datos del combobox
     */
    public ModeloComboBox(String[] datos) {
        this.datos = new ArrayList<String>();
        
        for(int i=0; i<datos.length; i++) {
            this.datos.add(datos[i]);
        }
    }
    
    /**
     * Devuelve el número de elementos del modelo
     * @return int size
     */
    @Override
    public int getSize() {
        return datos.size();
    }

    /**
     * Devuelve el elemento de una posición de tipo String
     * @param index Posición del elemento
     * @return Object de tipo String con el valor del elemento
     */
    @Override
    public Object getElementAt(int index) {
        return datos.get(index);
    }

    /**
     * Selecciona un elemento del modelo
     * @param item Object a seleccionar
     */
    @Override
    public void setSelectedItem(Object item) {
        itemSeleccionado = (String) item;
	fireContentsChanged(this, -1, -1);        
    }

    /**
     * Devuelve el item seleccionado en el modelo
     * @return Object de tipo String seleccionado
     */
    @Override
    public Object getSelectedItem() {
        return itemSeleccionado;
    }
    
    /**
     * Permite cambiar un dato por otro en una posición
     * @param item String con el nuevo valor
     * @param index Índice del dato que va a ser reemplazado
     */
    public void setItem(String item, int index) {
        datos.set(index, item);
    }
}
